#ifndef NAPLO_HPP
#define	NAPLO_HPP

#include <fstream>
#include <string>

using namespace std;

/**
 * Napló osztály
 */
class Naplo {
private:
    /**
     * A naplófájl fstream-je - ebbe írunk.
     */
    fstream naploFajl;
    /**
     * Be van-e zárva a naplófájl.
     */
    bool bezarva;
    /**
     * Első MI fájlneve
     */
    string mi0;
    /**
     * Második MI fájlneve
     */
    string mi1;
    /**
     * A pálya szélessége
     */
    int palyaX;
    /**
     * A pálya magassága
     */
    int palyaY;

    /**
     * A Napló osztály adattagjait felhasználva előállítja a naplófájl nevét.
     * A két játékos (MI) neve és a játék időpontjának időbélyege
     * "__"-vel (dupla aláhúzással) elválasztva egymástól, .log kiterjesztéssel.
     * @return leendő fájlnév (string)
     */
    string fajlNev();

public:

    /** A Napló konstruktora
     * @param miX az első MI (X) elérési útja (Az utolsó '/' utáni rész az MI neve)
     * @param miO a második MI (O) elérési útja
     * @param pX tábla szélessége
     * @param pY tábla magassága
     */
    Naplo(string miX, string miO, int pX, int pY);

    /**
     * Létrehozza a naplófájlt, beleírja az első három sort.
     * 1. MI neve (X)
     * 2. MI neve (O)
     * Tábla mérete (TABLE X Y)
     */
    void fejlec();

    /**
     * Lezárja a meccs naplót, beleírja a nyertest, illetve az indoklást
     * @param allapot A játék állása (lásd: jatekmenet.hpp)
     * @param indoklas A végeredmény indoklása (lásd: jatekmenet.hpp)
     */
    void lablec(int allapot, int indoklas);

    /** Minden lépés után meghívandó. Kiírja a naplóba, hogy ki hova tett jelet.
     * @param mi MI azonosítója: 0, ha X, 1, ha O.
     * @param x A lépés X koordinátája.
     * @param y A lépés Y koordinátája.
     */
    void lepes(int mi, int x, int y);

};

#endif	/* NAPLO_HPP */

